SignalR হলো একটি ASP.NET Core লাইব্রেরি যা রিয়েল-টাইম, দু-মুখী যোগাযোগ সক্ষম করে। এটি ক্লায়েন্ট এবং সার্ভারের মধ্যে দ্রুত এবং কার্যকরী যোগাযোগ তৈরি করতে সাহায্য করে। SignalR সাধারণত চ্যাট অ্যাপ্লিকেশন, লাইভ নিউজ ফিড, এবং অন্যান্য রিয়েল-টাইম পরিষেবায় ব্যবহৃত হয়। তবে, যখন আপনি রিয়েল-টাইম অ্যাপ্লিকেশন তৈরি করবেন, তখন নিরাপত্তা নিশ্চিত করা অত্যন্ত গুরুত্বপূর্ণ, বিশেষত Authentication এবং Authorization প্রক্রিয়া।
Authentication হল ব্যবহারকারীর পরিচয় নিশ্চিত করার প্রক্রিয়া, যেখানে ব্যবহারকারী সঠিকভাবে লগইন হয়েছে কিনা তা যাচাই করা হয়। অন্যদিকে, Authorization হল এই প্রক্রিয়া, যেখানে যাচাই করা হয় যে লগইন করা ব্যবহারকারী নির্দিষ্ট একটি রিসোর্স বা এক্সেস করতে অনুমতি পায় কিনা।
SignalR এর সঙ্গে Authentication এবং Authorization যুক্ত করার মাধ্যমে আপনি শুধুমাত্র অনুমোদিত ব্যবহারকারীদের জন্য রিয়েল-টাইম কানেকশন প্রদান করতে পারবেন। এর মাধ্যমে আপনি সঠিকভাবে নিরাপদ এবং প্রাইভেট কমিউনিকেশন নিশ্চিত করতে পারবেন।
SignalR হাব হচ্ছে একটি সার্ভার-ক্লায়েন্ট যোগাযোগ চ্যানেল। SignalR হাবের মাধ্যমে আপনি সার্ভার থেকে ক্লায়েন্টে রিয়েল-টাইম মেসেজ পাঠাতে পারেন। SignalR হাব তৈরি করার সময় যদি Authentication এবং Authorization যুক্ত করতে চান, তবে আপনাকে কয়েকটি ধাপ অনুসরণ করতে হবে।
প্রথমে SignalR হাব ক্লাস তৈরি করতে হবে যেখানে আমরা রিয়েল-টাইম মেসেজিং লজিক রাখব:
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
এই কোডে SendMessage
মেথডটি ব্যবহারকারীর নাম এবং মেসেজ গ্রহণ করে এবং তারপর সমস্ত সংযুক্ত ক্লায়েন্টে পাঠিয়ে দেয়।
ASP.NET Core অ্যাপ্লিকেশনে SignalR এর মাধ্যমে Authentication সক্ষম করতে হলে, প্রথমে আপনাকে ASP.NET Core Identity বা অন্য কোনো Authentication পদ্ধতি কনফিগার করতে হবে।
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = "/Account/Login";
});
services.AddSignalR();
}
এখানে AddAuthentication
এবং AddCookie
ব্যবহার করা হয়েছে, যা ASP.NET Core অ্যাপ্লিকেশনে কুকি ভিত্তিক Authentication সংযোগ করবে।
SignalR হাবে Authentication যোগ করার জন্য, আপনি ব্যবহারকারীর তথ্য Context.User
থেকে নিয়ে, কাস্টম অথরাইজেশন চেক করতে পারেন। নিম্নলিখিত কোডটি দেখুন:
public class ChatHub : Hub
{
public async Task SendMessage(string message)
{
var userName = Context.User.Identity.Name;
if (!Context.User.Identity.IsAuthenticated)
{
await Clients.Caller.SendAsync("Error", "User not authenticated");
return;
}
await Clients.All.SendAsync("ReceiveMessage", userName, message);
}
}
এখানে, Context.User.Identity.Name
ব্যবহার করে আমরা ব্যবহারকারীর নাম পেয়েছি এবং যাচাই করেছি যে ব্যবহারকারী অনুমোদিত কিনা। যদি ব্যবহারকারী লগইন না করে থাকে, তবে তা যাচাই করা হবে এবং একটি এরর মেসেজ পাঠানো হবে।
Authorization হল এটি নিশ্চিত করার প্রক্রিয়া যে, একজন ব্যবহারকারী শুধু তার অনুমোদিত রিসোর্স বা কার্যকলাপের জন্য এক্সেস করতে পারবে। SignalR হাবের ক্ষেত্রে, আপনি কাস্টম অথরাইজেশন পলিসি প্রয়োগ করতে পারেন, যা শুধুমাত্র নির্দিষ্ট ব্যবহারকারীদের জন্য রিয়েল-টাইম সেবা অনুমোদন করবে।
ASP.NET Core এ Authorization পলিসি তৈরি করতে হবে। উদাহরণস্বরূপ, আমরা যদি চাই যে শুধুমাত্র "Admin" রোলের ব্যবহারকারীরা রিয়েল-টাইম চ্যাটে অংশগ্রহণ করতে পারে, তবে আমরা এমন একটি পলিসি তৈরি করতে পারি:
services.AddAuthorization(options =>
{
options.AddPolicy("AdminOnly", policy => policy.RequireRole("Admin"));
});
এখানে AddAuthorization
পদ্ধতিটি ব্যবহার করে আমরা একটি পলিসি তৈরি করেছি যার নাম AdminOnly। এই পলিসি অনুযায়ী, শুধুমাত্র Admin
রোলের ব্যবহারকারী SignalR হাবের মাধ্যমে যোগাযোগ করতে পারবে।
SignalR হাবে Authorization প্রয়োগ করতে, আপনি RequireAuthorization
মেথড ব্যবহার করতে পারেন। এটি নিশ্চিত করবে যে, নির্দিষ্ট পলিসি অনুযায়ী শুধুমাত্র অনুমোদিত ব্যবহারকারীরা SignalR হাব অ্যাক্সেস করতে পারে।
public class ChatHub : Hub
{
[Authorize(Policy = "AdminOnly")]
public async Task SendMessage(string message)
{
var userName = Context.User.Identity.Name;
await Clients.All.SendAsync("ReceiveMessage", userName, message);
}
}
এখানে, Authorize
অ্যাট্রিবিউটটি SendMessage
মেথডে প্রয়োগ করা হয়েছে, যা নিশ্চিত করবে যে শুধুমাত্র AdminOnly
পলিসি পূর্ণ করা ব্যবহারকারীরা এই মেথডটিতে এক্সেস পাবে।
কিছু অ্যাপ্লিকেশনে JWT (JSON Web Token) Authentication ব্যবহৃত হয়, যেখানে ক্লায়েন্ট একটি টোকেন পাঠায় এবং সার্ভার তা যাচাই করে। SignalR এর সাথে JWT Authentication যুক্ত করতে হলে, আপনাকে ক্লায়েন্টে টোকেন পাঠাতে হবে এবং সার্ভারে তা যাচাই করতে হবে।
ASP.NET Core অ্যাপ্লিকেশনে JWT Authentication কনফিগার করতে হবে:
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.Authority = "https://your.authserver.com";
options.Audience = "your-audience";
});
services.AddSignalR();
}
এখানে JWT কনফিগারেশনে, AddJwtBearer
পদ্ধতি ব্যবহার করা হয়েছে। এটি SignalR এর ক্লায়েন্ট-সার্ভার যোগাযোগে JWT টোকেন যাচাই করবে।
SignalR এর সাথে Authentication এবং Authorization যোগ করা অত্যন্ত গুরুত্বপূর্ণ যখন আপনি নিরাপদ এবং অনুমোদিত রিয়েল-টাইম যোগাযোগ ব্যবস্থা তৈরি করতে চান। ASP.NET Core এ আপনি সহজেই Cookie Authentication, JWT Authentication, এবং Authorization Policies ব্যবহার করে SignalR হাবে ব্যবহারকারীদের প্রমাণীকরণ এবং অনুমোদন করতে পারেন। এর ফলে, আপনি শুধুমাত্র নির্দিষ্ট ব্যবহারকারীদের জন্য রিয়েল-টাইম সেবা উপলব্ধ করতে পারবেন, যা আপনার অ্যাপ্লিকেশনকে নিরাপদ এবং স্কেলেবল করে তোলে।
common.read_more